package main

import (
	"github.com/gin-gonic/gin"
	"os"
)

func main() {
	port := commandHandler()

	r := gin.Default()
	router(r)
	print("starting on port: " + port)
	r.Run(":" + port) // 监听并在 0.0.0.0:8080 上启动服务
}

// 接口路由等
func router(r *gin.Engine) gin.IRoutes {
	//root 302
	r.GET("/", func(c *gin.Context) {
		c.Redirect(302, "/index")
	})

	//简单PING响应
	r.GET("/ping", func(c *gin.Context) {
		c.String(200, "PONG")
	})

	//回声测试
	r.GET("/echo", func(c *gin.Context) {
		message := c.DefaultQuery("message", `HTTP GET parameter "message" is required`)
		c.String(200, message)
	})

	r.LoadHTMLGlob("./html/*")
	r.GET("/index", func(c *gin.Context) {
		c.HTML(200, "index.html", gin.H{})
	})

	return r
}

// 处理参数，是否DEBUG，提取接口
func commandHandler() string {
	if len(os.Args) < 2 {
		print(`need port parameter, e.g. "simple-http-ping.exe 8080"`)
		os.Exit(1)
	}

	port := os.Args[1] // 第一个参数为端口号
	debug := false     // 是否DEBUG
	if len(os.Args) > 2 {
		debug = os.Args[2] == "--debug"
	}

	if debug {
		gin.SetMode(gin.DebugMode)
	} else {
		gin.SetMode(gin.ReleaseMode)
	}
	return port
}
